package com.copd.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;

@Data
@ApiModel(description = "患者创建请求")
public class PatientCreateRequest {
    @ApiModelProperty(value = "基本信息", required = true)
    private BasicInfo basicInfo;

    @ApiModelProperty(value = "诊断记录", required = true)
    private List<DiagnosisRecord> diagnosisRecords;

    @ApiModelProperty(value = "检查项目", required = true)
    private List<ExaminationItem> examinationItems;

    @ApiModelProperty(value = "治疗项目", required = true)
    private List<TreatmentPlan> treatmentPlans;

    @ApiModelProperty(value = "出院建议", required = true)
    private List<DischargeAdvice> dischargeAdvices;

    @Data
    public static class BasicInfo {
        @ApiModelProperty(value = "用户ID", required = true, example = "12670131")
        private Integer userId;

        @ApiModelProperty(value = "姓名", required = true, example = "张三")
        private String name;

        @ApiModelProperty(value = "性别", required = true, example = "男")
        private String gender;

        @ApiModelProperty(value = "年龄", required = true, example = "50")
        private Integer age;

        @ApiModelProperty(value = "科室", required = true, example = "呼吸内科")
        private String department;

        @ApiModelProperty(value = "住院号", required = true, example = "20240001")
        private String hospitalizationNumber;
    }

    @Data
    public static class DiagnosisRecord {
        @ApiModelProperty(value = "诊断项目", required = true, example = "慢性阻塞性肺疾病")
        private String diagnosisItem;

        @ApiModelProperty(value = "诊断内容", required = true, example = "COPD急性加重")
        private String diagnosisContent;

        @ApiModelProperty(value = "备注", example = "需要长期治疗")
        private String remarks;
    }

    @Data
    public static class ExaminationItem {
        @ApiModelProperty(value = "检查类别", required = true, example = "动脉血气分析")
        private String examCategory;

        @ApiModelProperty(value = "检查项目", required = true, example = "氧分压")
        private String examItem;

        @ApiModelProperty(value = "检查结果", required = true, example = "36.00 mmHg")
        private String examResult;

        @ApiModelProperty(value = "参考值", example = "80-100 mmHg")
        private String referenceValue;

        @ApiModelProperty(value = "备注", example = "严重低氧血症")
        private String remarks;
    }

    @Data
    public static class TreatmentPlan {
        @ApiModelProperty(value = "治疗类别", required = true, example = "抗感染治疗")
        private String planCategory;

        @ApiModelProperty(value = "治疗项目", required = true, example = "抗感染治疗")
        private String treatmentItem;

        @ApiModelProperty(value = "具体方案", required = true, example = "头孢类、喹诺酮类")
        private String specificPlan;

        @ApiModelProperty(value = "备注", example = "抗感染")
        private String remarks;
    }

    @Data
    @ApiModel(description = "出院建议")
    public static class DischargeAdvice {
        @ApiModelProperty(value = "建议类别")
        private String adviceCategory;

        @ApiModelProperty(value = "出院建议项目")
        private String dischargeItem;

        @ApiModelProperty(value = "建议内容")
        private String dischargeContent;

        @ApiModelProperty(value = "备注")
        private String remarks;
    }
} 